# 4. docker之容器

# 创建容器之run命令

# 使用格式

  1. docker container run 选项 镜像名 -- 推荐使用
  2. docker run 选项 镜像名

# 容器常用选项

  1. -i, –interactive:分配一个交互式环境

  2. -t, –tty:分配一个伪终端

  3. -d, –detach:运行容器到后台

  4. -e, –env:设置环境变量(指定宿主机的那个环境变量传到容器中)

    docker container run -itd -e JAVA_HOME=/usr/local/jdk java:8
    
  5. -p, –publish list:发布容器端口到主机

    docker container run -itd -p 88:80 nginx
    
  6. -P, –publish-all:发布容器所有EXPOSE的端口到宿主机随机端口

  7. --name string:指定容器名称

    docker container run -itd -name sone java:8
    
  8. -h, –hostname:设置容器主机名

    docker container run -itd -h java8 java:8
    
  9. -ip string:指定容器IP,只能用于自定义网络

  10. --network:连接容器到一个网络

  11. --mount mount:将文件系统附加到容器

    docker container run -itd --mount src=nginx-l,dst=/usr/share/nginx/html nginx
    ##创建容器时挂载数据卷,src=数据卷名,dst=要挂载的容器中的路径
    
  12. -v, –volume list:绑定挂载一个卷

    docker contaier run -itd -v nginx-l:/usr/share/nginx/html nginx
    ##创建容器时挂载数据卷,卷名:要挂载的容器中的路径
    
  13. --restart string:容器退出时重启策略,需要容器docker启动自启容器,可以加这个选项,默认no,可选值:[always|on-failure]

    docker container run -itd --restart=always java:8
    

# 容器资源限制选项

-m,–memory:容器可以使用的最大内存量

--memory-swap:允许交换到磁盘的内存量,类型容器版的swap虚拟内存

--memory-swappiness=:容器使用SWAP分区交换的百分比(0-100,默认为-1)

–oom-kill-disable:禁用OOM Killer

--cpus:限制可以使用的CPU数量

--cpuset-cpus:限制容器使用特定的CPU核心,如(0-3, 0,1)

--cpu-shares:CPU共享(相对权重)

# 实例

创建一个容器,限制内存最多只能使用500m

docker container run -itd --memory="500m" nginx
##创建容器

docker container stats 容器ID
## 查看容器的资源使用,在这命令中可以查看限制的内存

创建一个容器,限制CPU,最多只能使用一个半的CPU

docker container run -itd --cpus="1.5" nginx

创建一个容器,限制CPU,最多只能使用半个的CPU

docker container run -itd --cpus=".5" nginx

# 容器常用的管理命令

# 查看容器 - ls

docker container ls
选项:-a
      docker container ls -a 
      ##-a选项:列出所有的容器,包含以停止的容器

# 查看一个或多个容器详细信息 - inspect

docker container inspect 容器ID

# 在运行容器中执行命令 - exec

docker container exec 容器ID 命令

# 进入容器内部 - exec -it

docker container exec -it 容器ID bash/sh

# 将容器保存成一个新的镜像 - commit

docker container commit 容器ID
##创建一个新镜像来自一个容器

# 拷贝文件/文件夹到一个容器 - cp

docker container cp

# 实例

docker container cp anaconda-ks.cfg 838dc2e585ae:/
##从宿主机当前目录拷贝一个文件到容器中的根目录中

docker container cp 838dc2e585ae:/anaconda-ks.cfg ./a
##从容器中的根目录下拷贝一个文件到宿主机的当前目录中,并改名为a

docker container cp sa 838dc2e585ae:/
##从宿主机当前目录拷贝一个目录到容器中的根目录中

# 获取一个容器日志 - logs

docker container logs 容器ID
选项:
      docker container logs 容器ID -f
      ##跟tail -f 命令的效果一样,实时输出日志

# 列出或指定容器端口映射 - port

docker container port 容器ID

# 显示一个容器运行的进程 - top

docker container top 容器ID

# 显示容器资源使用统计 - stats

docker container stats 容器ID

# 停止一个或多个容器 - stop

docker container stop 容器ID
docker container stop 容器ID 容器ID

# 启动一个或多个容器 - start

docker container start 容器ID
docker container start 容器ID 容器ID

# 重启一个或多个容器 - restart

docker container restart 容器ID
docker container restart 容器ID 容器ID

# 删除一个或多个容器 - rm

docker container rm 容器ID
docker container rm 容器ID 容器ID
选项:-f
	docker container rm -f 容器ID
	## 强制删除

# 实例

docker container rm -f $(docker container ls -a | awk '{print $1}')
##删除所有容器,包含以停止的容器

docker container rm -f $(docker container ls -a -q)
##删除所有容器,包含以停止的容器